home *** CD-ROM | disk | FTP | other *** search
/ Aminet 7 / Aminet 7 - August 1995.iso / Aminet / comm / net / AmiPOP116.lha / AmiPOP116 / source / asyncio.h < prev    next >
C/C++ Source or Header  |  1994-12-05  |  2KB  |  79 lines

  1. #ifndef __ASYNCIO_H
  2. #define __ASYNCIO_H
  3.  
  4.  
  5. /*****************************************************************************/
  6.  
  7.  
  8. #ifndef EXEC_TYPES_H
  9. #include <exec/types.h>
  10. #endif
  11.  
  12. #ifndef EXEC_PORTS_H
  13. #include <exec/ports.h>
  14. #endif
  15.  
  16. #ifndef DOS_DOS_H
  17. #include <dos/dos.h>
  18. #endif
  19.  
  20.  
  21. /*****************************************************************************/
  22.  
  23.  
  24. /* This structure is public only by necessity, don't muck with it yourself, or
  25.  * you're looking for trouble
  26.  */
  27. typedef struct AsyncFile
  28. {
  29.     BPTR                  af_File;
  30.     ULONG                 af_BlockSize;
  31.     struct MsgPort       *af_Handler;
  32.     APTR                  af_Offset;
  33.     LONG                  af_BytesLeft;
  34.     ULONG                 af_BufferSize;
  35.     APTR                  af_Buffers[2];
  36.     struct StandardPacket af_Packet;
  37.     struct MsgPort        af_PacketPort;
  38.     ULONG                 af_CurrentBuf;
  39.     ULONG                 af_SeekOffset;
  40.     UBYTE                 af_PacketPending;
  41.     UBYTE                 af_ReadMode;
  42. } AsyncFile;
  43.  
  44.  
  45. /*****************************************************************************/
  46.  
  47.  
  48. typedef enum OpenModes
  49. {
  50.     MODE_READ,      /* read an existing file                             */
  51.     MODE_WRITE,     /* create a new file, delete existing file if needed */
  52.     MODE_APPEND     /* append to end of existing file, or create new     */
  53. } OpenModes;
  54.  
  55. typedef enum SeekModes
  56. {
  57.     MODE_START = -1,   /* relative to start of file         */
  58.     MODE_CURRENT,      /* relative to current file position */
  59.     MODE_END           /* relative to end of file           */
  60. } SeekModes;
  61.  
  62.  
  63. /*****************************************************************************/
  64.  
  65.  
  66. AsyncFile *OpenAsync(const STRPTR fileName, OpenModes mode, LONG bufferSize);
  67. LONG CloseAsync(AsyncFile *file);
  68. LONG ReadAsync(AsyncFile *file, APTR buffer, LONG numBytes);
  69. LONG ReadCharAsync(AsyncFile *file);
  70. LONG WriteAsync(AsyncFile *file, APTR buffer, LONG numBytes);
  71. LONG WriteCharAsync(AsyncFile *file, UBYTE ch);
  72. LONG SeekAsync(AsyncFile *file, LONG position, SeekModes mode);
  73.  
  74.  
  75. /*****************************************************************************/
  76.  
  77.  
  78. #endif /* __ASYNCIO_H */
  79.